using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._IntelligenceTools._Analysis._Suitability
{
    /// <summary>
    /// <para>Generate HLZ Suitability</para>
    /// <para>Creates a helicopter landing zone (HLZ) suitability raster layer from reclassified slope, reclassified land cover, and obstacle buffers.</para>
    /// <para>根据重新分类的斜坡、重新分类的土地覆被和障碍物缓冲区创建直升机着陆区 （HLZ） 适宜性栅格图层。</para>
    /// </summary>    
    [DisplayName("Generate HLZ Suitability")]
    public class GenerateHLZSuitability : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateHLZSuitability()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_slope_raster">
        /// <para>Input Slope Raster</para>
        /// <para>The reclassified slope raster with values 1 (acceptable) and 2 (acceptable with caution). All other values will be excluded from the analysis.</para>
        /// <para>值为 1（可接受）和 2（谨慎接受）的重新分类的坡度栅格。所有其他值都将从分析中排除。</para>
        /// </param>
        /// <param name="_in_land_cover_raster">
        /// <para>Input Land Cover Raster</para>
        /// <para>The reclassified land cover raster with values 1 (acceptable) and 2 (acceptable with caution). All other values will be excluded from the analysis.</para>
        /// <para>值为 1（可接受）和 2（谨慎可接受）的重新分类的土地覆被栅格。所有其他值都将从分析中排除。</para>
        /// </param>
        /// <param name="_in_obstacle_buffer_features">
        /// <para>Input Obstacle Buffer Features</para>
        /// <para>Obstacle area features representing approach and departure safety buffers around obstacles.</para>
        /// <para>障碍物区域要素表示障碍物周围的进近和离场安全缓冲区。</para>
        /// </param>
        /// <param name="_out_raster">
        /// <para>Output Raster</para>
        /// <para>The output raster dataset.</para>
        /// <para>输出栅格数据集。</para>
        /// </param>
        public GenerateHLZSuitability(object _in_slope_raster, object _in_land_cover_raster, object _in_obstacle_buffer_features, object _out_raster)
        {
            this._in_slope_raster = _in_slope_raster;
            this._in_land_cover_raster = _in_land_cover_raster;
            this._in_obstacle_buffer_features = _in_obstacle_buffer_features;
            this._out_raster = _out_raster;
        }
        public override string ToolboxName => "Intelligence Tools";

        public override string ToolName => "Generate HLZ Suitability";

        public override string CallName => "intelligence.GenerateHLZSuitability";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_slope_raster, _in_land_cover_raster, _in_obstacle_buffer_features, _out_raster];

        /// <summary>
        /// <para>Input Slope Raster</para>
        /// <para>The reclassified slope raster with values 1 (acceptable) and 2 (acceptable with caution). All other values will be excluded from the analysis.</para>
        /// <para>值为 1（可接受）和 2（谨慎接受）的重新分类的坡度栅格。所有其他值都将从分析中排除。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Slope Raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_slope_raster { get; set; }


        /// <summary>
        /// <para>Input Land Cover Raster</para>
        /// <para>The reclassified land cover raster with values 1 (acceptable) and 2 (acceptable with caution). All other values will be excluded from the analysis.</para>
        /// <para>值为 1（可接受）和 2（谨慎可接受）的重新分类的土地覆被栅格。所有其他值都将从分析中排除。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Land Cover Raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_land_cover_raster { get; set; }


        /// <summary>
        /// <para>Input Obstacle Buffer Features</para>
        /// <para>Obstacle area features representing approach and departure safety buffers around obstacles.</para>
        /// <para>障碍物区域要素表示障碍物周围的进近和离场安全缓冲区。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Obstacle Buffer Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_obstacle_buffer_features { get; set; }


        /// <summary>
        /// <para>Output Raster</para>
        /// <para>The output raster dataset.</para>
        /// <para>输出栅格数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_raster { get; set; }


        public GenerateHLZSuitability SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}